import java.io.*;
import java.sql.*;
import java.util.StringTokenizer;
import oracle.jdbc.driver.OracleDriver;

public class ActDB {
  public static void main(String[] args)
    throws SQLException {
    if (args.length != 6) {
      System.err.println("Uso: java ActDB servidor puerto sid usuario pass tipo_archivo");
      System.exit(-1);
    }

    File archivo = null;
    File archivo2 = null;
    FileReader fr = null;
    FileReader fr2 = null;
    BufferedReader br = null;
    BufferedReader br2 = null;
    String ip = args[0];
    String puerto = args[1];
    String sid = args[2];
    String user = args[3];
    String pass = args[4];
    String arch_in = args[5];
    
    try  {
      archivo = new File(arch_in);
      archivo2 = new File(arch_in);
      fr = new FileReader(archivo);
      fr2 = new FileReader(archivo2);
      br = new BufferedReader(fr);
      br2 = new BufferedReader(fr2);

      DriverManager.registerDriver(new OracleDriver());

      Connection conn = DriverManager.getConnection(
        "jdbc:oracle:thin:@" + ip + ":" + puerto + ":" + sid, user, pass);

      PreparedStatement elimina = null;

      elimina = conn.prepareStatement("DELETE FROM XML_PORT_TEST WHERE XML_TEL LIKE ?");
      String linea;
      while ((linea = br.readLine()) != null)
      {
        StringTokenizer datos = new StringTokenizer(linea, "|");
        if (datos.hasMoreTokens()) {
          String valor = datos.nextToken();
          elimina.setString(1, valor);
          for (int i = 1; i <= 12; i++) {
            datos.nextToken();
          }
          elimina.executeUpdate();
        }
      }
      elimina.close();

      String tabla = "";
      if (arch_in.equalsIgnoreCase("portados")) {
        tabla = "XML_PORT_TEST";
      }
      if (arch_in.equalsIgnoreCase("borrados")) {
        tabla = "XML_DEL_TEST";
      }

      PreparedStatement insertar = conn.prepareStatement("INSERT INTO " + tabla + 
        " VALUES (?,?,?,?,?,?,?,?,TO_DATE(?,'YYYYMMDDHH24MISS')," + 
        "TO_DATE(?,'YYYYMMDDHH24MISS'),?,?,?)");

      while ((linea = br2.readLine()) != null) {
        StringTokenizer datos = new StringTokenizer(linea, "|");
        int items = datos.countTokens();
        if (datos.hasMoreTokens()) {
          for (int i = 1; i <= items; i++) {
            insertar.setString(i, datos.nextToken());
          }
          insertar.executeUpdate();
        }
      }
      insertar.close();
      conn.close();
    }
    catch (Exception e) {
      e.printStackTrace();
      try {
        if (fr != null) {
          fr.close();
          fr2.close();
        }
      } catch (Exception e2) {
        e2.printStackTrace();
      }
    }
    finally {
      try {
        if (fr != null) {
          fr.close();
          fr2.close();
        }
      } catch (Exception e2) {
        e2.printStackTrace();
      }
    }
  }
}